package com.aipartner.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 积分交易记录实体
 *
 * @author AI Partner
 * @since 2025-09-18
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("credits_transactions")
public class CreditsTransaction implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 积分交易ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 交易类型：earn-获得，consume-消耗，purchase-购买，gift-赠送，expire-过期扣减
     */
    private String transactionType;

    /**
     * 积分数量（正数为获得，负数为消耗）
     */
    private Long amount;

    /**
     * 交易前积分余额
     */
    private Long balanceBefore;

    /**
     * 交易后积分余额
     */
    private Long balanceAfter;

    /**
     * 积分来源：purchase-购买，ai_image-AI生图消耗，task_reward-任务奖励，vip_gift-VIP赠送
     */
    private String sourceType;

    /**
     * 来源ID（如订单号、任务ID等）
     */
    private String sourceId;

    /**
     * 交易描述
     */
    private String description;

    /**
     * 积分到期时间（购买的积分2年后过期）
     */
    private LocalDateTime expireTime;

    /**
     * 交易状态：pending-处理中，completed-已完成，failed-失败，expired-已过期
     */
    private String status;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}
